package ar.edu.utn.frsf.tpae.a2012.g05.dao.impl;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

import ar.edu.utn.frsf.tpae.a2012.g05.dao.MovimientoDao;
import ar.edu.utn.frsf.tpae.a2012.g05.entity.Movimiento;

public class MovimientoDaoImpl implements MovimientoDao{

	private SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
	
	public Movimiento saveOrUpdate(Movimiento movimiento) {
		System.out.println("Ingresando al m�todos saveOrUpdate con " + movimiento);
		Session session = sessionFactory.openSession();
	    session.beginTransaction();
	    session.saveOrUpdate(movimiento);
	    session.getTransaction().commit();
	    session.close();
	    System.out.println("Retornando del metodo saveOrUpdate");
	    return movimiento;
	}

	public void delete(Movimiento movimiento) {
		System.out.println("Ingresando al m�todos delete con " + movimiento);
		Session session = sessionFactory.openSession();
	    session.beginTransaction();
	    session.delete(movimiento);
	    session.getTransaction().commit();
	    session.close();
	    System.out.println("Retornando del metodo delete");
	}

	public Movimiento findById(Integer id) {
		Movimiento movimiento;
		Session session = sessionFactory.openSession();
	    session.beginTransaction();
	    movimiento = (Movimiento) session.get(Movimiento.class, id);
	    session.getTransaction().commit();
	    session.close();
	    return movimiento;
	}

	@SuppressWarnings("unchecked")
	public List<Movimiento> findAll() {
		List<Movimiento> movimientos = null;
		Session session = sessionFactory.openSession();
	    session.beginTransaction();
        Query query = session.createQuery("from Movimiento");
        movimientos = query.list();
	    session.getTransaction().commit();
	    session.close();
		return movimientos;
	}

}
